#include "Ugyfel.h"

using namespace std;

Ugyfel::Ugyfel(std::string fname){

    file=fname;
    ugyfel.open(fname.c_str());
    if (ugyfel.fail()) {throw OPEN_ERROR;}  //file megnyitása

    cout << "\n----------------Ugyfel-------------------\n";
    string nev;
    string telefonsz;

    ugyfel >> nev;
    ugyfel >> telefonsz;

    cout << "Ugyfel: " << nev << "\nTelefonszam: " << telefonsz << "\n\nJarmuvek:\n";

    jarmus akt;    //járművek listázása

    size=0;
    ugyfel >> akt;
    if (ugyfel.fail()){size=0;cout<<"\t--nincs adat--\n";}
    else {
        size++;
        while (!ugyfel.eof()){
            cout << size-1 << " " << akt << endl;
            size++;
            ugyfel >> akt;
        }
        cout << size-1 << " " << akt << endl;
    }

    int z=0;        //mûvelet választás
    string rubbish;
    bool l=true;
    bool first=true;
    while(l){
        if (!first){
            ugyfel.close();
            ugyfel.open(fname.c_str());
            if (ugyfel.fail()) {throw OPEN_ERROR;}  //file megnyitása
            cout << "\n----------------Ugyfel-------------------\n";
            ugyfel >> nev;
            ugyfel >> telefonsz;
            cout << "Ugyfel: " << nev << "\nTelefonszam: " << telefonsz << "\n\nJarmuvek:\n";
            jarmus akt;    //járművek listázása
            int size2=0;
            while (!ugyfel.eof())
            {
                ugyfel >> akt;
                cout << " " << size2 << " " << akt << endl;
                size2++;
            }
        }
        first=false;
        cout <<"\t\nMUVELETEK:\n jarmu hozzaadasa: 1\n jarmuadatok lekerdezese: 2\n telefonszam modositasa: 3\n visszalepes: 4\n\t ";
        cin >> z;
        switch (z){
            case 1:
                AddJarmu();
                size++;
                break;
            case 2:
                WriteJarmu();
                cout << endl;
                break;
            case 3:
                ModTel();
                break;
            case 4:
                l=false;
                break;
            default:
                string rubbish;
                cin.clear();
                getline(cin,rubbish,'\n');
                cout << "Hibas adat\n";
                break;
        }
    }
}

void Ugyfel::ModTel(){
    ugyfel.close();
    ugyfel.open(file.c_str());
    if (ugyfel.fail()) {throw OPEN_ERROR;}  //file megnyitása

    string nev="";
    string tel="";
    ugyfel >> nev;
    cout << "Uj telefonszam: ";
    cin >> tel;

    ugyfel.close();
    ugyfel.open(file.c_str());
    if (ugyfel.fail()) {throw OPEN_ERROR;}

    ugyfel << nev << " " << tel;

}

void Ugyfel::WriteJarmu(){
    int i;
    do{
        string rubbish;
        cin.clear();
        getline(cin,rubbish,'\n');
        cout << "valasztott jarmu szama: ";
        cin >> i;
    }
    while (i<0 || i>=size || cin.fail());

    string fname = convertInt(i,file);
    Jarmu jarmu(fname);    //következő szint
}

void Ugyfel::AddJarmu(){
    //Adatok bekérése
    jarmus uj;
    uj.setAll();

    //saját file létrehozása
    ofstream jarmu(convertInt(size,file).c_str());
    jarmu << uj.getTipus() << " " << uj.getGyartmany() << " " << uj.getEvjarat() << " " << uj.getKivitel() << " " << uj.getHengerurtartalom() << " " << uj.getUzemanyag() << " " << uj.getMotorszam() << " " << uj.getAlvazszam() << " " << uj.getRendsz() << endl;
    jarmu.close();

    //ügyfélfile végére írás
    ugyfel.close();
    ugyfel.open (file.c_str(), fstream::out | fstream::in | fstream::app);
    if (ugyfel.fail()) {throw OPEN_ERROR;}
    ugyfel << endl << uj.getRendsz() << " " << convertInt(size,file);

    cout << "a jarmu letrehozasa sikerult.\n";
}

Ugyfel::~Ugyfel()
{
    ugyfel.close();
}
